﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace QuanLyThongTinNhanKhau.model.BO
{
    class NhanKhauBO
    {
        model.DAO.NhanKhauDAO nhanKhauDAO = new DAO.NhanKhauDAO();
        GUI.NhanKhau f;

        public NhanKhauBO(GUI.NhanKhau nhanKhau)
        {
            this.f = nhanKhau;
        }


        internal void loadTable()
        {
            DataTable dt = nhanKhauDAO.loadTable();
            loadCheckBox(dt);
        }

        private void loadCheckBox(DataTable dt)
        {
            dt.Columns.Add("DaChet");
            dt.Columns.Add("TienAnTienSu");
            dt.Columns.Add("TamTru");
            dt.Columns.Add("TamVang");

            if (dt.Rows.Count != 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    if (nhanKhauDAO.checkTamTru(dr["MaNhanKhau"].ToString()))
                    {
                        dr["TamTru"] = "Y";
                    }
                    else
                    {
                        dr["TamTru"] = "N";
                    }

                    if (nhanKhauDAO.checkTamVang(dr["MaNhanKhau"].ToString()))
                    {
                        dr["TamVang"] = "Y";
                    }
                    else
                    {
                        dr["TamVang"] = "N";
                    }

                    if (nhanKhauDAO.checkTienAnTienSu(dr["MaNhanKhau"].ToString()))
                    {
                        dr["TienAnTienSu"] = "Y";
                    }
                    else
                    {
                        dr["TienAnTienSu"] = "N";
                    }

                    if (nhanKhauDAO.checkDaChet(dr["MaNhanKhau"].ToString()))
                    {
                        dr["DaChet"] = "Y";
                    }
                    else
                    {
                        dr["DaChet"] = "N";
                    }
                }
                this.f.gridcontrolNhanKhau.DataSource = dt;
             }
        }

        internal void timKiem()
        {
           DataTable dt = nhanKhauDAO.timKiem(this.f.txtMaNhanKhau.Text.Trim(), this.f.txtHoTen.Text.Trim(), this.f.txtCMND.Text.Trim());

           if (dt.Rows.Count != 0)
           {
               loadCheckBox(dt);
           }
           else
           {
               this.f.gridcontrolNhanKhau.DataSource = null;
           }
            
        }

        internal void generationID()
        {
            //genarate MaNhanKhau
            StringBuilder maNhanKhau = new StringBuilder();
            Random random = new Random();

            do
            {
                maNhanKhau.Clear();
                maNhanKhau.Append("MNK");
                for (int i = 0; i < 5; i++)
                {
                    maNhanKhau.Append(random.Next(0, 9));
                }
            } while (nhanKhauDAO.isValidMaNhanKhau(maNhanKhau.ToString()));

            this.f.txtUMNK.Text = maNhanKhau.ToString();
        }

        internal void btnLuu()
        {
            String maNhanKhau = this.f.txtUMNK.Text.Trim();
            String hoTen = this.f.txtUHoTen.Text.Trim();
            String trinhDo = this.f.txtUTrinhDo.Text.Trim();
            String gioiTinh = this.f.cboUGioiTinh.SelectedItem.ToString();
            String queQuan = this.f.txtUQueQuan.Text.Trim();
            String cmnd = this.f.txtUCMND.Text.Trim();
            String noiThuongTru = this.f.txtUNTT.Text.Trim();
            String ngaySinh = this.f.dateTimeNgaySinh.Value.ToString("yyyy-MM-dd");


            //if Update
            if (nhanKhauDAO.isValidMaNhanKhau(this.f.txtUMNK.Text))
            {
                if ("".Equals(this.f.txtUHoTen.Text.Trim()))
                {
                    System.Windows.Forms.MessageBox.Show("Vui lòng điền Họ và Tên");
                }
                else
                {
                    if(nhanKhauDAO.updateNhanKhau(maNhanKhau,hoTen,trinhDo,gioiTinh,queQuan,cmnd,noiThuongTru,ngaySinh))
                    {
                        System.Windows.Forms.MessageBox.Show("Cập nhật thành công");
                        loadTable();
                    }
                }
            }
            else //if New
            {
                if ("".Equals(this.f.txtUHoTen.Text.Trim()))
                {
                    System.Windows.Forms.MessageBox.Show("Vui lòng điền Họ và Tên");
                }
                else
                {
                    if(nhanKhauDAO.newNhanKhau(maNhanKhau,hoTen,trinhDo,gioiTinh,queQuan,cmnd,noiThuongTru,ngaySinh))
                    {
                        System.Windows.Forms.MessageBox.Show("Thêm mới thành công");
                        loadTable();
                    }
            
                }
            }
        }

        internal void deleteNhanKhau(string maNhanKhau)
        {
            if (nhanKhauDAO.deleteNhanKhau(maNhanKhau))
            {
                System.Windows.Forms.MessageBox.Show("Xóa thành công");
                loadTable();
            }
        }
    }
}
